export const PancakeGiftV1Abi = [
  {
    inputs: [{ internalType: 'address', name: 'owner', type: 'address' }],
    stateMutability: 'nonpayable',
    type: 'constructor',
  },
  { inputs: [], name: 'AlreadyExpired', type: 'error' },
  { inputs: [], name: 'EnforcedPause', type: 'error' },
  { inputs: [], name: 'ExceedTokenTransferGasLimit', type: 'error' },
  { inputs: [], name: 'ExpectedPause', type: 'error' },
  { inputs: [], name: 'GiftAlreadyClaimed', type: 'error' },
  { inputs: [], name: 'GiftAlreadyExists', type: 'error' },
  { inputs: [], name: 'GiftNotExist', type: 'error' },
  { inputs: [], name: 'InvalidExpiryTime', type: 'error' },
  { inputs: [], name: 'InvalidGasPayment', type: 'error' },
  { inputs: [], name: 'InvalidGiftAmount', type: 'error' },
  { inputs: [], name: 'InvalidNativeAmount', type: 'error' },
  { inputs: [], name: 'InvalidNativeTransferGasLimit', type: 'error' },
  { inputs: [], name: 'InvalidTokenAmount', type: 'error' },
  { inputs: [], name: 'InvalidTokenFeeOnTransfer', type: 'error' },
  { inputs: [], name: 'InvalidTokenTransferGasLimit', type: 'error' },
  { inputs: [], name: 'NativeTransferFailed', type: 'error' },
  { inputs: [], name: 'NotExpired', type: 'error' },
  { inputs: [], name: 'NotGiftCreatorOrOperator', type: 'error' },
  { inputs: [], name: 'NotOperator', type: 'error' },
  { inputs: [], name: 'NotOperatorOrSelf', type: 'error' },
  { inputs: [{ internalType: 'address', name: 'owner', type: 'address' }], name: 'OwnableInvalidOwner', type: 'error' },
  {
    inputs: [{ internalType: 'address', name: 'account', type: 'address' }],
    name: 'OwnableUnauthorizedAccount',
    type: 'error',
  },
  { inputs: [], name: 'ReentrancyGuardReentrantCall', type: 'error' },
  {
    inputs: [
      { internalType: 'uint8', name: 'bits', type: 'uint8' },
      { internalType: 'uint256', name: 'value', type: 'uint256' },
    ],
    name: 'SafeCastOverflowedUintDowncast',
    type: 'error',
  },
  { inputs: [], name: 'ZeroAddress', type: 'error' },
  {
    anonymous: false,
    inputs: [
      { indexed: false, internalType: 'address', name: 'to', type: 'address' },
      { indexed: false, internalType: 'uint256', name: 'amount', type: 'uint256' },
    ],
    name: 'CollectGasFee',
    type: 'event',
  },
  {
    anonymous: false,
    inputs: [
      { indexed: true, internalType: 'bytes32', name: 'codeHash', type: 'bytes32' },
      { indexed: false, internalType: 'uint256', name: 'gasPayment', type: 'uint256' },
    ],
    name: 'GiftCancelled',
    type: 'event',
  },
  {
    anonymous: false,
    inputs: [
      { indexed: true, internalType: 'bytes32', name: 'codeHash', type: 'bytes32' },
      { indexed: true, internalType: 'address', name: 'to', type: 'address' },
    ],
    name: 'GiftClaimed',
    type: 'event',
  },
  {
    anonymous: false,
    inputs: [
      { indexed: true, internalType: 'bytes32', name: 'codeHash', type: 'bytes32' },
      { indexed: true, internalType: 'address', name: 'creator', type: 'address' },
      { indexed: true, internalType: 'address', name: 'token', type: 'address' },
      { indexed: false, internalType: 'uint128', name: 'tokenAmount', type: 'uint128' },
      { indexed: false, internalType: 'uint128', name: 'nativeAmount', type: 'uint128' },
      { indexed: false, internalType: 'uint128', name: 'gasPayment', type: 'uint128' },
      { indexed: false, internalType: 'uint128', name: 'expiry', type: 'uint128' },
    ],
    name: 'GiftCreated',
    type: 'event',
  },
  {
    anonymous: false,
    inputs: [
      { indexed: true, internalType: 'address', name: 'previousOwner', type: 'address' },
      { indexed: true, internalType: 'address', name: 'newOwner', type: 'address' },
    ],
    name: 'OwnershipTransferred',
    type: 'event',
  },
  {
    anonymous: false,
    inputs: [{ indexed: false, internalType: 'address', name: 'account', type: 'address' }],
    name: 'Paused',
    type: 'event',
  },
  {
    anonymous: false,
    inputs: [{ indexed: false, internalType: 'address', name: 'account', type: 'address' }],
    name: 'Unpaused',
    type: 'event',
  },
  {
    anonymous: false,
    inputs: [{ indexed: false, internalType: 'uint256', name: 'newExpiryTime', type: 'uint256' }],
    name: 'UpdateExpiryTime',
    type: 'event',
  },
  {
    anonymous: false,
    inputs: [{ indexed: false, internalType: 'uint256', name: 'newGasPayment', type: 'uint256' }],
    name: 'UpdateGasPayment',
    type: 'event',
  },
  {
    anonymous: false,
    inputs: [{ indexed: false, internalType: 'uint256', name: 'newNativeTransferGasLimit', type: 'uint256' }],
    name: 'UpdateNativeTransferGasLimit',
    type: 'event',
  },
  {
    anonymous: false,
    inputs: [
      { indexed: true, internalType: 'address', name: 'operator', type: 'address' },
      { indexed: false, internalType: 'bool', name: 'isOperatorOrNot', type: 'bool' },
    ],
    name: 'UpdateOperator',
    type: 'event',
  },
  {
    anonymous: false,
    inputs: [{ indexed: false, internalType: 'uint256', name: 'newTokenTransferGasLimit', type: 'uint256' }],
    name: 'UpdateTokenTransferGasLimit',
    type: 'event',
  },
  {
    anonymous: false,
    inputs: [
      { indexed: true, internalType: 'address', name: 'token', type: 'address' },
      { indexed: true, internalType: 'address', name: 'receiver', type: 'address' },
      { indexed: false, internalType: 'uint256', name: 'amount', type: 'uint256' },
    ],
    name: 'Withdraw',
    type: 'event',
  },
  {
    inputs: [],
    name: 'EXPIRY_TIME',
    outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [],
    name: 'GAS_PAYMENT',
    outputs: [{ internalType: 'uint128', name: '', type: 'uint128' }],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [],
    name: 'MAX_EXPIRY_TIME',
    outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [],
    name: 'MAX_GAS_PAYMENT',
    outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [],
    name: 'MAX_TOKEN_TRANSFER_GAS_LIMIT',
    outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [],
    name: 'MIN_EXPIRY_TIME',
    outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [],
    name: 'MIN_NATIVE_TRANSFER_GAS_LIMIT',
    outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [],
    name: 'NATIVE_TRANSFER_GAS_LIMIT',
    outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [],
    name: 'TOKEN_TRANSFER_GAS_LIMIT',
    outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [{ internalType: 'bytes32[]', name: 'codeHashList', type: 'bytes32[]' }],
    name: 'batchCancelGift',
    outputs: [{ internalType: 'bool[]', name: '', type: 'bool[]' }],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  {
    inputs: [
      {
        components: [
          { internalType: 'string', name: 'code', type: 'string' },
          { internalType: 'address', name: 'to', type: 'address' },
        ],
        internalType: 'struct PancakeGiftV1.BatchClaimGiftParam[]',
        name: 'params',
        type: 'tuple[]',
      },
    ],
    name: 'batchClaimGift',
    outputs: [{ internalType: 'bool[]', name: '', type: 'bool[]' }],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  {
    inputs: [{ internalType: 'string', name: 'code', type: 'string' }],
    name: 'calculateGiftCodeHash',
    outputs: [{ internalType: 'bytes32', name: '', type: 'bytes32' }],
    stateMutability: 'pure',
    type: 'function',
  },
  {
    inputs: [{ internalType: 'bytes32', name: 'codeHash', type: 'bytes32' }],
    name: 'cancelGift',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  {
    inputs: [
      { internalType: 'string', name: 'code', type: 'string' },
      { internalType: 'address', name: 'to', type: 'address' },
    ],
    name: 'claimGift',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  {
    inputs: [{ internalType: 'address', name: 'to', type: 'address' }],
    name: 'collectGasFee',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  {
    inputs: [
      { internalType: 'bytes32', name: 'codeHash', type: 'bytes32' },
      { internalType: 'address', name: 'token', type: 'address' },
      { internalType: 'uint128', name: 'tokenAmount', type: 'uint128' },
      { internalType: 'uint128', name: 'nativeAmount', type: 'uint128' },
    ],
    name: 'createGift',
    outputs: [],
    stateMutability: 'payable',
    type: 'function',
  },
  {
    inputs: [{ internalType: 'bytes32', name: 'giftCodeHash', type: 'bytes32' }],
    name: 'gifts',
    outputs: [
      { internalType: 'address', name: 'token', type: 'address' },
      { internalType: 'address', name: 'creator', type: 'address' },
      { internalType: 'uint128', name: 'tokenAmount', type: 'uint128' },
      { internalType: 'uint128', name: 'nativeAmount', type: 'uint128' },
      { internalType: 'uint128', name: 'gasPayment', type: 'uint128' },
      { internalType: 'enum PancakeGiftV1.GiftStatus', name: 'status', type: 'uint8' },
      { internalType: 'uint96', name: 'expiry', type: 'uint96' },
    ],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [{ internalType: 'address', name: '', type: 'address' }],
    name: 'isOperator',
    outputs: [{ internalType: 'bool', name: '', type: 'bool' }],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [],
    name: 'owner',
    outputs: [{ internalType: 'address', name: '', type: 'address' }],
    stateMutability: 'view',
    type: 'function',
  },
  { inputs: [], name: 'pause', outputs: [], stateMutability: 'nonpayable', type: 'function' },
  {
    inputs: [],
    name: 'paused',
    outputs: [{ internalType: 'bool', name: '', type: 'bool' }],
    stateMutability: 'view',
    type: 'function',
  },
  { inputs: [], name: 'renounceOwnership', outputs: [], stateMutability: 'nonpayable', type: 'function' },
  {
    inputs: [{ internalType: 'uint128', name: 'newGasPayment', type: 'uint128' }],
    name: 'setGasPayment',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  {
    inputs: [{ internalType: 'uint256', name: 'newNativeTransferGasLimit', type: 'uint256' }],
    name: 'setNativeTransferGasLimit',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  {
    inputs: [
      { internalType: 'address', name: 'operator', type: 'address' },
      { internalType: 'bool', name: 'isOperatorOrNot', type: 'bool' },
    ],
    name: 'setOperator',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  {
    inputs: [{ internalType: 'uint256', name: 'newTokenTransferGasLimit', type: 'uint256' }],
    name: 'setTokenTransferGasLimit',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  {
    inputs: [],
    name: 'totalGasFeeClaimableByPCS',
    outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [{ internalType: 'address', name: 'newOwner', type: 'address' }],
    name: 'transferOwnership',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  { inputs: [], name: 'unpause', outputs: [], stateMutability: 'nonpayable', type: 'function' },
  {
    inputs: [{ internalType: 'uint256', name: 'newExpiryTime', type: 'uint256' }],
    name: 'updateExpiryTime',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function',
  },
]
